home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
c
/
arrays.exe
/
ARRAYS.C
< prev
next >
Wrap
C/C++ Source or Header
|
1991-10-29
|
1KB
|
64 lines
/* ARRAYS.C 1.00 DEMONSTRATION OF C LANGUAGE ARRAY DIFFICULTIES
V01 L00 1991-10-29-11:13 develop array case based on problem raised
by Barry Gombert. How do you put a pointer to an array in
a struct definition?
*/
#include <assert.h>
#include <stdlib.h>
struct IBlock
{unsigned long (*Band)[];};
struct JBlock
{unsigned long *BandArray;};
int main(int argc, char *argv[])
{ /* figure out some Band array information */
unsigned long Band1[10],
(*BandAid)[10];
struct IBlock Block1;
struct JBlock Block2;
int i;
i = sizeof(Band1)/sizeof(Band1[0]);
while (i--)
{Band1[i] = ((unsigned long)(1) << 16) + i; }
Block1.Band = Band1;
/* The problem. The following line is a *big* clue! */
Block1.Band = (unsigned long (*)[]) Band1;
assert(Block1.Band == Band1);
assert(Block1.Band == (unsigned long (*)[]) Band1);
assert((*Block1.Band)[0] == Band1[0]);
Block2.BandArray = Band1;
assert(Block2.BandArray == Band1);
assert(Block2.BandArray[0] == Band1[0]);
assert(*(Block2.BandArray+0) == Band1[0]);
BandAid = Band1;
BandAid = (unsigned long (*)[]) Band1;
return 0;}